Traitement des données avec Python

Partie 1 : Extraire la localisation et la date de l'image.

Nous vous proposons le programme à compléter suivant qui utilise trois fonctions vous permettant d'afficher les informations requises dans la console :

from PIL import Image
from PIL.ExifTags import TAGS

def get_coord_gps(exif_data):
    lat = coord_degres(exif_data['GPSInfo'][2])
    lat_ref = exif_data['GPSInfo'][1]
    long = coord_degres(exif_data['GPSInfo'][4])
    long_ref = exif_data['GPSInfo'][3]
    if lat_ref != "N":
        lat *= -1  # équivalent à lat = (-1)*lat
    if long_ref != "E":
        long *= -1   # équivalent à long = (-1)*long
    return lat, long

def coord_degres(coord):
    # Conversion des coordonnées GPS en degrés
    return coord[0] + (coord[1] / 60.0) + (coord[2] / 3600.0)

def get_date_time(exif_data):
    sdate_time = exif_data['DateTime']
    ldate_time = sdate_time.split(" ")
    ldate = ldate_time[0].split(":")
    time = ldate_time[1]
    date = ldate[2]+"/"+ldate[1]+"/"+ldate[0]
    return date, time

img = Image.open("NYC.jpg")
img.show()
exif_data = {TAGS[k]: v for k, v in img._getexif().items() if k in TAGS}
print(exif_data)

# A compléter !

1. Complétez le programme pour qu'il affiche la localisation GPS (latitude et longitude) ainsi que la date et l'heure de la prise de vue.


Partie 2 : Générer la carte postale

Le patron est réalisé avec les mêmes dimensions que la photographie, avec une couleur primaire (vert : (0, 255, 0)) sur fond blanc (255, 255, 255). Il suffit de lire chaque pixel, dans une double boucle balayant toutes les coordonnées x, y du patron et de vérifier la couleur : si c'est vert, vous recopiez le pixel(x, y) de la photographie dans la nouvelle image et sinon, vous écrivez un pixel blanc.

Attention, la couleur verte  (0, 255, 0) n'est pas forcément aussi précise, il est donc obligatoire de prendre une marge de 10 environ sur ces valeurs (0 à 10, 245 à 255, 0 à 10).

2. Ajoutez et complétez le code suivant :

patron = Image.open("patron_NYC.jpg")
patron.show()
l, h = img.size
carte_postale = Image.new("RGB",(l,h)) 

# A compléter !

Attention, le traitement de l'image peut être long (> 1 min !) suivant la rapidité de votre PC.

Source : https://lesmanuelslibres.region-academique-idf.fr
Télécharger le manuel : https://forge.apps.education.fr/drane-ile-de-france/les-manuels-libres/snt-seconde ou directement le fichier ZIP
Sous réserve des droits de propriété intellectuelle de tiers, les contenus de ce site sont proposés dans le cadre du droit Français sous licence CC BY-NC-SA 4.0